package com.xiu.travel.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum WxErrorCodeEnum
{
    /**
     * 无效请求
     */
    INVALID_REQUEST("INVALID_REQUEST", "无效请求", "请根据接口返回的详细错误描述信息检查您的程序"),
    /**
     * 交易失败
     */
    TRADE_ERROR("TRADE_ERROR", "交易失败", "提示用户更换支付方式"),
    /**
     * 系统错误
     */
    SYSTEM_ERROR("SYSTEMERROR", "系统错误", "请用原请求参数再次调用支付接口以确认结果。如果持续返回SYSTEMERROR，请调用撤销接口，并告知用户更换支付方式。"),
    /**
     * 请求参数错误
     */
    PARAM_ERROR("PARAM_ERROR", "请求参数错误", "请根据接口返回的详细错误描述信息检查您的程序"),
    /**
     * 余额不足
     */
    NOT_ENOUGH("NOT_ENOUGH", "余额不足", "提示用户余额不足或更换支付方式"),
    /**
     * 付款码无效
     */
    AUTH_CODE_INVALID("AUTH_CODE_INVALID", "付款码无效", "请检查是否是微信的付款码。然后更换out_trade_no和付款码后再次发起支付。"),
    /**
     * 付款码无效
     */
    SIGN_ERROR("SIGN_ERROR","错误的签名，验签失败","参数错误，验签失败"),
    /**
     * 支付方式暂不可用
     */
    ACCOUNT_ERROR("ACCOUNT_ERROR","用户支付方式暂不可用","请用户更换支付方式"),
    /**
     * 请求参数异常
     */
    ERROR("ERROR","支付请求参数异常","请用户刷新付款码后重新支付");
    private String code;
    private String message;
    private String detail;

    public void setCode(String code)
    {
        this.code = code;
    }

    public void setMessage(String message)
    {
        this.message = message;
    }

    public void setDetail(String detail)
    {
        this.detail = detail;
    }

    public static WxErrorCodeEnum getEnumByCode(String code)
    {
        for (WxErrorCodeEnum errorCode : WxErrorCodeEnum.values())
        {
            if (errorCode.getCode().equals(code))
            {
                return errorCode;
            }
        }
        return null;
    }
}
